<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>递归函数</title>
</head>
<body>
    <script>
        //递归函数  
        // 自己调用自己 
        //一定要设置好结束条件

        //技巧
        // 写一个函数
        // 写好结束条件 
        // 没有达到结束条件 不要忘了return 


        // 10! 

        // 循环
        // var num = 1;
        // for(var i=1;i<=10;i++){
        //     num*=i;
        // }
        // alert(num);

        // 阶乘 至少是 1 
        // 1当做结束条件
        // 10*fn(9)
        // 10*9*fn(8)
        // 10*9*8*fn(7)
        //10*9*8*7*6*5*4*3*2*f(1)
        // function fn(num){
        //     if(num == 1) return 1;
        //     return num*fn(num-1);
        // }

        // 
        // 1 1 2 3 5 8 13 21 34 55 89 144  斐波那契数列 
        //                   num1  num2   num3
        // 1     1     2     3       5     8
        //
        function myfibo(n){
            var num1 = 1;
            var num2 = 1;
            var num3 = 0;
            if(n<=2){
                return 1;
            }else{
                while(n>2){
                    num3 = num1+num2;
                    num1 = num2;
                    num2 = num3;
                    n--;
                }
                return num3;
            }


        }

        // alert(myfibo(3));

        // function myfibo2(num){
        //     if(num==1 ||　num== 2){ //结束条件   1或者2的时候 结果为1
        //         return 1;
        //     }
        //     return myfibo2(num-1)+myfibo2(num-2); 
        //     // 从第三个月开始任何月的结果都是前两个月的和
        // }

        // alert(myfibo2(1000)); // 递归也是有限制的 不能无限次的调用自己 
        // //注意调用的次数 





    
        
    </script>
</body>
</html>